草庐IT

swift - 在 Swift 中迭代 NSMutableArray

全部标签

c++ - 在 C++ 中迭代结构

我在迭代结构时遇到了一些问题。根据编译器标志,结构可以有不同的定义。我想将所有结构成员设置为0。不知道有多少个成员,但保证都是数字(int,long...)请看下面的例子:#ifdefFLAG1structstr{inti1;longl1;doulbed1;};#elsifdefined(OPTION2)structstr{doubled1longl1;};#elsestructstr{inti1;};#endif我想我想做的一个很好的伪代码是:voidf(str*toZero){foreachmembermintoZerom=0}有没有办法在C++中轻松做到这一点?

c++ - (void)r++ 输入迭代器的要求

在24.2.3Inputiterators下,C++标准将输入迭代器的要求之一指定为表达式(void)r++等效于(void)++r.您也可以在cppreference看到这个.这是什么表情?这个要求有什么意义?为什么需要它?它看起来像一个C风格的强制转换,以取消r++或++r的结果,但我认为这不是它的真实面目。也就是说,稍微有点题外话,我似乎可以在类中定义一个void转换运算符。gcc和clang都编译它,但clang给出了警告:warning:conversionfunctionconverting'C'to'void'willneverbeused 最

C++:偏移到 std::vector 迭代器的正确转换是什么?

我有一个函数,它接受double的std::vector,并将它们复制到另一个vector,但在特定的偏移量处(假设有足够的空间):voidcopy_stuff(conststd::vector&data,std::vector&dest,size_tdest_offset){std::copy(data.begin(),data.end(),dest.begin()+dest_offset);}这导致C++11clang编译器-Weverything警告集中在+dest_offset部分:Implicitconversionchangessignedness:'size_t'(aka

c++ - 将迭代器取消引用到临时范围时出现非指针操作数错误

使用autoempty_line=[](auto&str){returnstr.size()==0;};我们可以这样做:autoline_range_with_first_non_empty=ranges::view::drop_while(ranges::getlines(std::cin),empty_line);autoinput1=std::stoi(*line_range_with_first_non_empty.begin());我们也可以这样做:autoline_range2=ranges::getlines(std::cin);autoiter2=ranges::fin

c++ - STL vector 、迭代器和插入 (C++)

我有一个向其传递vector迭代器的方法。在这种方法中,我想将一些元素添加到vector中,但我不确定在只有迭代器时这是否可行voidGUIComponentText::AddAttributes(vector::iteratorbegin,vector::iteratorend){for(vector::iteratori=begin;i!=end;++i){GUIComponentAttribute&attrib=*(*i);//HerearetheGUIComponentAttributeobjectsanalyzed-ifanobjectofa//specialkindappe

c++ - 像迭代器一样编写 STL

我试图学习像迭代器一样编写STL,为此我编写了一个简单的循环数组并在其中添加了一个迭代器。请查看代码底部以查看问题。templateclassRingQueue{T*_marray;int_mbegin;int_msize;public:RingQueue(){_marray=newT[N];_mbegin=0;_msize=0;}voidpush_back(constT&val){if(_msize!=N){_marray[(_mbegin+_msize)%N]=val;_msize++;}elsethrow"QueueFull";}Tpop_front(){if(_msize!=0

c++ - c++ STL迭代器的混淆使用

当我像这样使用迭代器时,//includeheaderfilesusingnamespacestd;intmain(){mapintIntMap;map::iteratorpos;pos=intIntMap.begin();intIntMap[0]=1;intIntMap[3]=5;intIntMap[4]=9;intIntMap[5]=5;//遍历coutfirst"second输出为4;但是当我这样使用迭代器时://includeheaderfileusingnamespacestd;intmain(){mapintIntMap;map::iteratorpos;intIntMap

c++ - 使用迭代器从 boost 多索引中删除项目时的一致性

我知道下面的代码对于std::vectors和更普遍的所有STL容器来说是不正确的:std::vector::iteratorit=array.begin();for(;it!=array.end();it++){...array.erase(it);...}因为删除元素后需要更新迭代器。我想知道boost多索引是否相同,例如,下面的内容是否正确:my_index::iteratorit=index.get().begin();for(;it!=index.get().end();it++){...index.erase(it);...}我想确保理解文档的以下段落:http://www

类中的 C++ 迭代器

我有以下类(class):classlist{private:structnode{node(){data=T();prev=next=this;}˜node(){}Tdata;node*prev;node*next;};public:classiterator{public:iterator():p(NULL){}T&operator*(){returnp->data;}iterator&operator++(){p=p->next;return*this;}iterator&operator++(int){iteratortmp=*this;++*this;return*tmp;}

c++ - 一对开始和结束迭代器——它有名字吗?

在C++中,是否定义了表示一对迭代器的struct(或类)——一个开始迭代器,一个结束迭代器?代表这一点的最佳做法是什么?标准::对?我知道我自己可以很容易地构建它,但我想遵循常见的做法。我搜索以下内容:templatestructXXX{private:Itb;Ite;public:Itbegin()const{returnb;}Itend()const{returne;}//...}; 最佳答案 如果它是一对两个任意迭代器,那就是-一对迭代器。如果它恰好是一对迭代器,某些假设成立,例如“它们指向同一个容器”,我会称它为“范围”,